CKEDITOR.plugins.add( 'tokens',
{   
   requires : ['richcombo'], //, 'styles' ],
   init : function( editor )
   {
      var config = editor.config,
         lang = editor.lang.format;

      // Gets the list of tags from the settings.
      var tags = []; //new Array();
      //this.add('value', 'drop_text', 'drop_label');
	  tags[0]=["{FIRSTNAME}", "First name", "First Name"];
      tags[1]=["{LONGDATE}", "Long Date", "Ex:July 16, 2013"];
      tags[2]=["{ABRIVATED}", "Abrivated Date", "Ex:Jul 16, 2013"];
	  tags[3]=["{SHORTDATE}", "Short Date", "Ex:07/16/2013"];
	  tags[4]=["{SENDEREMAIL}", "Sender Email", "Sender Email"];
	  tags[5]=["{RECEIVEREMAIL}", "Receiver Email", "Receiver email"];
	  
       // Create style objects for all defined styles.
      editor.ui.addRichCombo( 'tokens',
         {
            label : "Insert tokens",
            title :"Insert tokens",
            voiceLabel : "Insert tokens",
            className : 'cke_format',
            multiSelect : false,

            panel :
            {
               css : [ config.contentsCss, CKEDITOR.getUrl( 'skins/moono/editor.css' ) ],
               voiceLabel : lang.panelVoiceLabel
            },

            init : function()
            {
               this.startGroup( "" );
               //this.add('value', 'drop_text', 'drop_label');
               for (var this_tag in tags){
                  this.add(tags[this_tag][0], tags[this_tag][1], tags[this_tag][2]);
               }
            },

            onClick : function( value )
            {         
               editor.focus();
               editor.fire( 'saveSnapshot' );
               editor.insertHtml(value);
               editor.fire( 'saveSnapshot' );
            }
         });
   }
});